Entity Framework (EF) এ Data Seeding হলো একটি প্রক্রিয়া যার মাধ্যমে ডেটাবেসে প্রাথমিক বা স্ট্যাটিক ডেটা ইনসার্ট করা হয়, যেমন ডিফল্ট বা অপরিবর্তনীয় ডেটা। EF ডেটাবেসে ডেটা সিড করতে দুইটি প্রধান পদ্ধতি ব্যবহার করা যায়: Automatic Seeding এবং Manual Seeding। এখানে আমরা এই দুটি পদ্ধতি এবং তাদের ব্যবহারের ধরন সম্পর্কে আলোচনা করব।
Automatic Data Seeding
Automatic Data Seeding বা স্বয়ংক্রিয় ডেটা সিডিং হল এমন একটি প্রক্রিয়া যেখানে Entity Framework নিজে থেকেই প্রাথমিক ডেটা সিড করে, সাধারণত ডেটাবেস মাইগ্রেশন করার সময়। EF আপনাকে বিভিন্ন মডেল (Entity Class) এর জন্য ডিফল্ট ডেটা সরবরাহ করতে সক্ষম করে, এবং এটি আপনার মডেল ক্লাসের OnModelCreating মেথডের মাধ্যমে করা হয়। EF মাইগ্রেশন সম্পাদন করার সময় স্বয়ংক্রিয়ভাবে ডেটাবেসে এই ডেটা সিড করা হয়।
উদাহরণ: Automatic Data Seeding
ধরা যাক, আমাদের একটি Student Entity রয়েছে এবং আমরা ডেটাবেসে প্রাথমিকভাবে কয়েকটি ছাত্রের তথ্য সিড করতে চাই। এর জন্য OnModelCreating মেথডে Seed Data যোগ করা হবে।
public class SchoolContext : DbContext
{
public DbSet<Student> Students { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
// Automatic Data Seeding
modelBuilder.Entity<Student>().HasData(
new Student { Id = 1, Name = "John Doe", Age = 20 },
new Student { Id = 2, Name = "Jane Smith", Age = 22 }
);
}
}
এখানে:
HasData()মেথড ব্যবহার করা হয়েছে যাতেStudentEntity এর জন্য কিছু প্রাথমিক ডেটা সিড করা যায়।- যখন আপনি মাইগ্রেশন করবেন, তখন এই ডেটা ডেটাবেসে স্বয়ংক্রিয়ভাবে সিড হবে।
এটি Automatic Seeding হিসাবে কাজ করে, যেখানে EF নিজে থেকেই এই ডেটাগুলি ডেটাবেসে যোগ করবে।
মাইগ্রেশন করার সময় Data Seeding
Automatic Data Seeding সম্পাদনের জন্য আপনাকে মাইগ্রেশন করতে হবে:
নতুন মাইগ্রেশন তৈরি করুন:
dotnet ef migrations add SeedInitialDataডেটাবেস আপডেট করুন:
dotnet ef database update
এখন আপনার ডেটাবেসে Student টেবিলে স্বয়ংক্রিয়ভাবে প্রাথমিক ডেটা সিড হয়ে যাবে।
Manual Data Seeding
Manual Data Seeding বা ম্যানুয়াল ডেটা সিডিং হল এমন একটি পদ্ধতি যেখানে ডেটা সিডিং কার্যটি আপনার হাতে থাকে এবং আপনি যখন ইচ্ছা তখন সিড করতে পারেন। সাধারণত এটি তখন ব্যবহৃত হয় যখন আপনাকে কোন নির্দিষ্ট সময়ে ডেটা সিড করতে হবে, বা প্রাথমিক ডেটা সিডিং এর জন্য আরও বেশি কাস্টমাইজেশন প্রয়োজন হয়।
উদাহরণ: Manual Data Seeding
ধরা যাক, আপনি ডেটাবেসে কিছু ডিফল্ট ডেটা সিড করতে চান, কিন্তু সেটা স্বয়ংক্রিয়ভাবে নয়, আপনি যখন চাইবেন তখন।
public class SchoolContext : DbContext
{
public DbSet<Student> Students { get; set; }
public void SeedData()
{
// Manually adding data
if (!Students.Any())
{
Students.AddRange(
new Student { Name = "John Doe", Age = 20 },
new Student { Name = "Jane Smith", Age = 22 }
);
SaveChanges();
}
}
}
এখানে:
SeedData()মেথড তৈরি করা হয়েছে, যা ম্যানুয়ালি ডেটা সিড করার জন্য ব্যবহৃত হবে।Students.Any()চেক করে যেStudentsটেবিলটি খালি আছে কি না, যদি খালি থাকে, তবে ডেটা সিড করা হবে।SaveChanges()মেথডটি ডেটাবেসে পরিবর্তন সেভ করবে।
ম্যানুয়াল সিডিং চালানো
আপনি যখন আপনার অ্যাপ্লিকেশন চালাবেন, তখন আপনি SeedData() মেথডটি কল করতে পারেন:
using (var context = new SchoolContext())
{
context.SeedData();
}
এখানে, ম্যানুয়ালি ডেটা সিড করতে SeedData() মেথড কল করা হয়েছে।
Automatic এবং Manual Seeding-এর মধ্যে পার্থক্য
- স্বয়ংক্রিয় সিডিং (Automatic Seeding):
- EF নিজে থেকেই ডেটা সিড করে মাইগ্রেশন চলাকালে।
OnModelCreatingমেথডেHasData()ব্যবহার করে ডেটা সিড করা হয়।- ডেটা সিডিং প্রক্রিয়া ডেটাবেস মাইগ্রেশন বা আপডেট করার সময় অটোমেটিকভাবে সম্পাদিত হয়।
- ম্যানুয়াল সিডিং (Manual Seeding):
- ডেটা সিড করার প্রক্রিয়া ডেভেলপার দ্বারা পরিচালিত হয়।
- আপনি আপনার কোডে
DbContextব্যবহার করে সিডিং করতে পারেন। - এটি সাধারণত তখন ব্যবহৃত হয় যখন আপনাকে ডেটা সিডিং করার সময় কাস্টম লজিক প্রয়োগ করতে হয়।
সারাংশ
Entity Framework-এ Automatic Data Seeding এবং Manual Data Seeding দুটি পদ্ধতি ব্যবহার করে আপনি আপনার ডেটাবেসে প্রাথমিক ডেটা সিড করতে পারেন। Automatic Seeding সাধারণত মাইগ্রেশন চলাকালে EF দ্বারা স্বয়ংক্রিয়ভাবে সম্পন্ন হয়, যখন Manual Seeding ডেভেলপার দ্বারা কাস্টমাইজডভাবে পরিচালিত হয় এবং প্রয়োজনে ম্যানুয়ালি চালু করা যায়।
Read more